//
// Created by Administrator on 2021/7/24.
//

//给你一个字符串 time ，格式为 hh:mm（小时：分钟），其中某几位数字被隐藏（用 ? 表示）。
//
//有效的时间为 00:00 到 23:59 之间的所有时间，包括 00:00 和 23:59 。
//
//替换time 中隐藏的数字，返回你可以得到的最晚有效时间。
//
//来源：力扣（LeetCode）
//链接：https://leetcode-cn.com/problems/latest-time-by-replacing-hidden-digits
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

#include <vector>
#include <iostream>
#include <string>

using namespace std;

class Solution {
public:
    /// 逐位判断
    string maximumTime(string time) {
        if (time[0] == '?')
            time[0] = time[1] >= '4' and time[1] <= '9' ? '1' : '2';
        if (time[1] == '?')
            time[1] = time[0] < '2' ? '9' : '3';
        if (time[3] == '?')
            time[3] = '5';
        if (time[4] == '?')
            time[4] = '9';
        return time;
    }
};

int main() {
    Solution solution;
    cout << solution.maximumTime("2?:0?") << endl;
    cout << solution.maximumTime("2?:??") << endl;
    cout << solution.maximumTime("0?:3?") << endl;
    cout << solution.maximumTime("?5:?8") << endl;
    return 0;
}
